const express = require('express');
const router = express.Router();
const discussionService = require('../services/DiscussionService');

// 获取讨论列表（支持搜索和筛选）
router.get('/', async (req, res) => {
  try {
    const { 
      query = '', 
      packageId = '', 
      sortBy = 'newest', 
      page = 1, 
      pageSize = 10 
    } = req.query;
    
    const result = await discussionService.getDiscussions({
      query,
      packageId,
      sortBy,
      page: parseInt(page),
      pageSize: parseInt(pageSize)
    });
    
    res.json(result);
  } catch (error) {
    console.error('获取讨论列表失败:', error);
    res.status(500).json({ error: error.message || '获取讨论列表失败' });
  }
});

// 获取包的讨论
router.get('/package/:packageId', async (req, res) => {
  try {
    const { packageId } = req.params;
    const { page = 1, limit = 20 } = req.query;
    const result = await discussionService.getDiscussionsByPackage(packageId, {
      page,
      limit
    });
    res.json(result);
  } catch (error) {
    console.error('获取讨论失败:', error);
    res.status(500).json({ error: error.message || '获取讨论失败' });
  }
});

// 添加讨论或评论
router.post('/', async (req, res) => {
  try {
    const discussion = await discussionService.addDiscussion(req.body);
    res.status(201).json(discussion);
  } catch (error) {
    console.error('添加讨论失败:', error);
    res.status(500).json({ error: error.message || '添加讨论失败' });
  }
});

// 点赞评论
router.post('/:id/like', async (req, res) => {
  try {
    const { id } = req.params;
    const result = await discussionService.likeDiscussion(id);
    res.json(result);
  } catch (error) {
    console.error('点赞失败:', error);
    if (error.message === '评论不存在') {
      res.status(404).json({ error: '评论不存在' });
    } else {
      res.status(500).json({ error: error.message || '点赞失败' });
    }
  }
});

// 删除评论
router.delete('/:id', async (req, res) => {
  try {
    const { id } = req.params;
    await discussionService.deleteDiscussion(id);
    res.json({ success: true, message: '评论删除成功' });
  } catch (error) {
    console.error('删除评论失败:', error);
    if (error.message === '评论不存在') {
      res.status(404).json({ error: '评论不存在' });
    } else {
      res.status(500).json({ error: error.message || '删除评论失败' });
    }
  }
});

module.exports = router;